"DECEMBER" AS SAVED ON DISK
0800              1           TTL "Speed/asm Sample pgm #8"
0800              2  ;
0800              3  ;
0800              4  ;
0800              5  *********************************
0800              6  *                               *
0800              7  * Speed/asm sample program #8   *
0800              8  *                               *
0800              9  * Written by Randall Hyde       *
0800             10  * Written on LISA v2.6          *
0800             11  * 7/22/83                       *
0800             12  *                               *
0800             13  *********************************
0800             14  ;
0800             15  ;
0800             16  ;
0800             17  ;
0800             18  **********************************
0800             19  *                                *
0800             20  * SPEED/ASM Equates              *
0800             21  *                                *
0800             22  **********************************
0800             23  ;
0800             24  ;
0800             25  ;
0800             26  ;
0800             27  ;
0800             28  ;
0800             29  ;
0800             30  ;
0800             31  ; GENERAL PURPOSE EQUATES
0800             32  ;
0800             33  ; The following variables are used
0800             34  ; by the SPEED/ASM package and
0800             35  ; shouldn't be used by the SPEED/ASM
0800             36  ; programmer.
0800             37  ;
0800             38  ;
0800             39  ;
0800             40  ;
0000             41  FORASAV  EPZ 0
0001             42  FORXSAV  EPZ FORASAV+1
0002             43  FORYSAV  EPZ FORXSAV+1
0003             44  FORZPG   EPZ FORYSAV+1
0005             45  DESTADR  EPZ FORZPG+2
0007             46  PTRADR   EPZ DESTADR+2
0009             47  ISIMMED  EPZ PTRADR+2
000A             48  OP       EPZ ISIMMED+1
000C             49  MAXLEN   EPZ OP+2
000D             50  VALUE    EPZ MAXLEN+1
000F             51  DIGIT    EPZ VALUE+2
0010             52  LEAD0    EPZ DIGIT+1
0011             53  JMPADR   EPZ LEAD0+1
0013             54  COUNT    EPZ JMPADR+2
0014             55  GOTLN    EPZ COUNT+1
0015             56  LINEINDX EPZ GOTLN+1
0016             57  SIGN     EPZ LINEINDX+1
0017             58  ACL      EPZ SIGN+1
0018             59  ACH      EPZ ACL+1
0019             60  XTNDL    EPZ ACH+1
001A             61  XTNDH    EPZ XTNDL+1
001B             62  AUXL     EPZ XTNDH+1
001C             63  AUXH     EPZ AUXL+1
0800             64  ;
0033             65  PROMPT   EPZ $33
004E             66  RNDL     EPZ $4E
004F             67  RNDH     EPZ $4F
0100             68  STACK    EQU $100
0200             69  INPUT    EQU $200
0800             70  ;
0800             71  ;
0800             72  ;
0800             73  ;
0800             74  ;
0800             75  ;
0800             76  ;
0800             77  *************
0800             78  * CONSTANTS *
0800             79  *************
0800             80  ;
0800             81  ;
0800             82  ;
0800             83  ; The following symbols are constants
0800             84  ; for the values "FALSE", "TRUE", and
0800             85  ; Carriage Return (respectively).
0800             86  ;
0800             87  ; These symbols should only appear
0800             88  ; as inrtediate operands to a 6502
0800             89  ; instruction or in the operand field
0800             90  ; of a pseudo-opcode like BYT.
0800             91  ;
0800             92  ;
0800             93  ;
0800             94  ;
0800             95  ;
0000             96  FALSE    EQU 0
0001             97  TRUE     EQU 1
008D             98  CR       EQU $8D
0087             99  BELL     EQU $87
0800            100  ;
0800            101  ;
0800            102  ;
0800            103  ;
0800            104  ;
0800            105  ;
0800            106  ; "IF" STATEMENT EQUATES
0800            107  ;
0800            108  ; The following symbols should only
0800            109  ; be used in the ADR pseudo-opcode
0800            110  ; following a call to the SPEED/ASM
0800            111  ; IFx routines.
0800            112  ;
0800            113  ;
0800            114  ;
00BD            115  EQ       EQU "="
00A3            116  NE       EQU "#"
00BE            117  GT       EQU ">"
00BC            118  LT       EQU "<"
BDBE            119  GE       EQU ">"|"="*256
BDBC            120  LE       EQU "<"|"="*256
0800            121  ;
0800            122  ;
0800            123  ;
0800            124  ;
0800            125  ;
0800            126  ;
0800            127  ;
0800            128  **************************
0800            129  * SPEED/ASM ENTRY POINTS *
0800            130  **************************
0800            131  ;
0800            132  ;
0800            133  ;
0800            134  ;
0800            135  ; NOTE: TOE EQUATE OF HJTC MUST
0800            136  ; BE CHANGED IF YOU RELOCATE
0800            137  ; SPEED/ASM TO SOME LOCATION
0800            138  ; OTHER THAN $7800
0800            139  ;
0800            140  ;
0800            141  ;
7800            142  PUTC     EQU $7800
7803            143  GETC     EQU PUTC+3
7806            144  SAGL     EQU GETC+3          ; FOR USE BY S/A ONLY- SEE DOC.
7809            145  SAPC     EQU SAGL+3          ;  "   "   "  "   "     "   "
780C            146  HOME     EQU SAPC+3          ; HOME AND CLEAR
780F            147  READLN   EQU HOME+3
7812            148  INIT     EQU READLN+3
7815            149  FOR      EQU INIT+3
7818            150  FOR0     EQU FOR+3
781B            151  NEXT     EQU FOR0+3
781E            152  IFI      EQU NEXT+3
7821            153  IFI0     EQU IFI+3
7824            154  IFS      EQU IFI0+3
7827            155  IFS0     EQU IFS+3
782A            156  MOVE     EQU IFS0+3
782D            157  LOAD     EQU MOVE+3
7830            158  MOVS     EQU LOAD+3
7833            159  LDSTR    EQU MOVS+3
7836            160  PRINT    EQU LDSTR+3
7839            161  PRTSTR   EQU PRINT+3
783C            162  PRTINT   EQU PRTSTR+3
783F            163  RDSTR    EQU PRTINT+3
7842            164  RDINT    EQU RDSTR+3
7845            165  ONXGOTO  EQU RDINT+3
7848            166  CASE     EQU ONXGOTO+3
784B            167  CASEI    EQU CASE+3
784E            168  INSET    EQU CASEI+3
7851            169  NOTINSET EQU INSET+3
7854            170  ABS      EQU NOTINSET+3
7857            171  NEG      EQU ABS+3
785A            172  MUL      EQU NEG+3
785D            173  DIV      EQU MUL+3
7860            174  MOD      EQU DIV+3
7863            175  RND      EQU MOD+3
7866            176  SUBSTR   EQU RND+3
7869            177  INDEX    EQU SUBSTR+3
786C            178  LENGTH   EQU INDEX+3
786F            179  CONCAT   EQU LENGTH+3
7872            180  GETWZPG  EQU CONCAT+3        ;USED BY SPEED/ASM
7875            181  RDFP     EQU GETWZPG+3
7878            182  PRTE     EQU RDFP+3
787B            183  PRTF     EQU PRTE+3
787E            184  FADD     EQU PRTF+3
7881            185  FSUB     EQU FADD+3
7884            186  FMUL     EQU FSUB+3
7887            187  FDIV     EQU FMUL+3
788A            188  FLT      EQU FDIV+3
788D            189  FIX      EQU FLT+3
7890            190  FNEG     EQU FIX+3
7893            191  FADDTN   EQU FNEG+3
7896            192  FSUBTN   EQU FADDTN+3
7899            193  FTIMES   EQU FSUBTN+3
789C            194  FINTO    EQU FTIMES+3
789F            195  IFF      EQU FINTO+3
78A2            196  MOVFP    EQU IFF+3
0800            197  ;
0800            198  ;
0800            199  ;
0800            200  ;
0800            201  ;
0800            202  **********************************
0800            203  **********************************
0800            204  ;
0800            205  ; Sample program #8 begins here.
0800            206  ;
0800            207  ;
0800 20 12 78   208  START    JSR INIT            ;Always do first
0803            209  ;
0803 20 0C 78   210  MENULOOP JSR HOME
0806 20 36 78   211           JSR PRINT
0809 D3 F0 E5   212           BYT "Speed/asm Sample Program #8",CR
080C E5 E4 AF 
080F E1 F3 ED 
0812 A0 D3 E1 
0815 ED F0 EC 
0818 E5 A0 D0 
081B F2 EF E7 
081E F2 E1 ED 
0821 A0 A3 B8 
0824 8D 
0825 8D C5 F8   213           BYT CR,"Examples of various"
0828 E1 ED F0 
082B EC E5 F3 
082E A0 EF E6 
0831 A0 F6 E1 
0834 F2 E9 EF 
0837 F5 F3 
0839 A0 ED E5   214           BYT " menu programming",CR
083C EE F5 A0 
083F F0 F2 EF 
0842 E7 F2 E1 
0845 ED ED E9 
0848 EE E7 8D 
084B F3 F4 F9   215           BYT "styles.",CR
084E EC E5 F3 
0851 AE 8D 
0853 8D         216           BYT CR
0854 D3 E5 EC   217           BYT "Select one:",CR,CR
0857 E5 E3 F4 
085A A0 EF EE 
085D E5 BA 8D 
0860 8D 
0861 A0 A0 C1   218           BYT "  A) Straight menu selection",CR
0864 A9 A0 D3 
0867 F4 F2 E1 
086A E9 E7 E8 
086D F4 A0 ED 
0870 E5 EE F5 
0873 A0 F3 E5 
0876 EC E5 E3 
0879 F4 E9 EF 
087C EE 8D 
087E A0 A0 C2   219           BYT "  B) Select values in a set",CR
0881 A9 A0 D3 
0884 E5 EC E5 
0887 E3 F4 A0 
088A F6 E1 EC 
088D F5 E5 F3 
0890 A0 E9 EE 
0893 A0 E1 A0 
0896 F3 E5 F4 
0899 8D 
089A A0 A0 C3   220           BYT "  C) Checking for values"
089D A9 A0 C3 
08A0 E8 E5 E3 
08A3 EB E9 EE 
08A6 E7 A0 E6 
08A9 EF F2 A0 
08AC F6 E1 EC 
08AF F5 E5 F3 
08B2 A0 EE EF   221           BYT " not in a set",CR
08B5 F4 A0 E9 
08B8 EE A0 E1 
08BB A0 F3 E5 
08BE F4 8D 
08C0 8D         222           BYT CR
08C1 C3 E8 EF   223           BYT "Choice? :",0
08C4 E9 E3 E5 
08C7 BF A0 BA 
08CA 00 
08CB            224  ;
08CB            225  ;
08CB            226  ; Read a character, if it is lcwer
08CB            227  ; case convert it to upper case,
08CB            228  ; then jump to the appropriate routine.
08CB            229  ;
08CB 20 03 78   230           JSR GETC
08CE C9 E1      231           CMP #"a"            ; See if lower case
08D0 90 02      232           BLT >0
08D2 29 DF      233           AND #$DF            ; Converts it to upper
08D4            234  ;
08D4 20 48 78   235  ^0       CSP CASE,#NUMCAS0/3
08D7 03 
08D8 C1 0B 09   236  CASES0   .DA "A",STDMENU
08DB C2 54 0A   237           .DA "B",SETSELCT
08DE C3 5E 0B   238           .DA "C",NOTSTEXP
08E1            239  ;
0009            240  NUMCAS0  =   *-CASES0
08E1            241  ;
08E1            242  ;
08E1            243  ;
08E1            244  ; An invalid value was entered at
08E1            245  ; this point.
08E1            246  ;
08E1 20 36 78   247           CSP PRINT
08E4 8D 8D 87   248           BYT CR,CR,BELL,BELL
08E7 87 
08E8 C9 EE F6   249           BYT "Invalid entry, press return",CR,0
08EB E1 EC E9 
08EE E4 A0 E5 
08F1 EE F4 F2 
08F4 F9 AC A0 
08F7 F0 F2 E5 
08FA F3 F3 A0 
08FD F2 E5 F4 
0900 F5 F2 EE 
0903 8D 00 
0905            250  ;
0905 20 0F 78   251           JSR READLN
0908 4C 03 08   252           JMP MENULOOP
090B            253  ;
090B            254  ;
090B            255  ;
090B            256  ;*************************************
090B            257  ;
090B            258  ;
090B            259  ; A standard menu selection is
090B            260  ; demonstrated here. Actually,
090B            261  ; the main menu is identical to
090B            262  ; this type of code.
090B            263  ;
090B 20 0C 78   264  STDMENU  JSR HOME
090E 20 36 78   265           CSP PRINT
0911 8D 8D      266           BYT CR,CR
0913 D3 F4 E1   267           BYT "Standard Menu Selection",CR,CR
0916 EE E4 E1 
0919 F2 E4 A0 
091C CD E5 EE 
091F F5 A0 D3 
0922 E5 EC E5 
0925 E3 F4 E9 
0928 EF EE 8D 
092B 8D 
092C A0 A0 B0   268           BYT "  0: print 0",CR
092F BA A0 F0 
0932 F2 E9 EE 
0935 F4 A0 B0 
0938 8D 
0939 A0 A0 B1   269           BYT "  1: print 1",CR
093C BA A0 F0 
093F F2 E9 EE 
0942 F4 A0 B1 
0945 8D 
0946 A0 A0 B2   270           BYT "  2: print 2",CR
0949 BA A0 F0 
094C F2 E9 EE 
094F F4 A0 B2 
0952 8D 
0953 A0 B5 B5   271           BYT " 55: print 55",CR,CR
0956 BA A0 F0 
0959 F2 E9 EE 
095C F4 A0 B5 
095F B5 8D 8D 
0962 C3 E8 EF   272           BYT "Choice? :",0
0965 E9 E3 E5 
0968 BF A0 BA 
096B 00 
096C            273  ;
096C 20 42 78   274           CSP RDINT,SELCTVAR
096F DC 0B 
0971            275  ;
0971 20 4B 78   276           CSP CASEI,NUMCS1/4,SELCTVAR
0974 04 00 DC 
0977 0B 
0978 00 00 AE   277  CASES1   ADR 0,ZERO
097B 09 
097C 01 00 C7   278           ADR 1,ONE
097F 09 
0980 02 00 DD   279           ADR 2,TWO
0983 09 
0984 37 00 F3   280           ADR 55,FIFTYFIV
0987 09 
0988            281  ;
0010            282  NUMCS1   =   *-CASES1
0988            283  ;
0988            284  ;
0988            285  ; If the program gets to this point
0988            286  ; then they've entered an invalid
0988            287  ; value.
0988            288  ;
0988 20 36 78   289           CSP PRINT
098B 87 87 8D   290           BYT BELL,BELL,CR
098E C9 EE F6   291           BYT "Invalid entry, press return",CR,0
0991 E1 EC E9 
0994 E4 A0 E5 
0997 EE F4 F2 
099A F9 AC A0 
099D F0 F2 E5 
09A0 F3 F3 A0 
09A3 F2 E5 F4 
09A6 F5 F2 EE 
09A9 8D 00 
09AB 4C 0B 09   292           JMP STDMENU
09AE            293  ;
09AE            294  ;
09AE            295  ;********
09AE            296  ;
09AE            297  ; Control is transferred here if
09AE            298  ; the user pressed 0.
09AE            299  ;
09AE 20 36 78   300  ZERO     CSP PRINT,#CR,"You pressed zero",#CR,#0
09B1 8D D9 EF 
09B4 F5 A0 F0 
09B7 F2 E5 F3 
09BA F3 E5 E4 
09BD A0 FA E5 
09C0 F2 EF 8D 
09C3 00 
09C4 4C 0F 0A   301           JMP QUITSTD
09C7            302  ;
09C7            303  ;
09C7            304  ;********
09C7            305  ;
09C7            306  ; Control is transferred here if
09C7            307  ; the user pressed 1.
09C7            308  ;
09C7 20 36 78   309  ONE      CSP PRINT,#CR,"You entered 1",#CR,#0
09CA 8D D9 EF 
09CD F5 A0 E5 
09D0 EE F4 E5 
09D3 F2 E5 E4 
09D6 A0 B1 8D 
09D9 00 
09DA 4C 0F 0A   310           JMP QUITSTD
09DD            311  ;
09DD            312  ;
09DD            313  ;********
09DD            314  ;
09DD            315  ; Control is transferred here if
09DD            316  ; the user pressed 2.
09DD            317  ;
09DD 20 36 78   318  TWO      CSP PRINT,#CR,"You entered 2",#CR,#0
09E0 8D D9 EF 
09E3 F5 A0 E5 
09E6 EE F4 E5 
09E9 F2 E5 E4 
09EC A0 B2 8D 
09EF 00 
09F0 4C 0F 0A   319           JMP QUITSTD
09F3            320  ;
09F3            321  ;
09F3            322  ;********
09F3            323  ;
09F3            324  ; Control is transferred here if
09F3            325  ; the user pressed 55.
09F3            326  ;
09F3 20 36 78   327  FIFTYFIV CSP PRINT,#CR
09F6 8D 
09F7 D9 EF F5   328           BYT "You entered fifty-five",CR,0
09FA A0 E5 EE 
09FD F4 E5 F2 
0A00 E5 E4 A0 
0A03 E6 E9 E6 
0A06 F4 F9 AD 
0A09 E6 E9 F6 
0A0C E5 8D 00 
0A0F            329  ;
0A0F            330  ;
0A0F 20 36 78   331  QUITSTD  CSP PRINT,#CR
0A12 8D 
0A13 D0 F2 E5   332           BYT "Press return to continue:"
0A16 F3 F3 A0 
0A19 F2 E5 F4 
0A1C F5 F2 EE 
0A1F A0 F4 EF 
0A22 A0 E3 EF 
0A25 EE F4 E9 
0A28 EE F5 E5 
0A2B BA 
0A2C 00         333           BYT 0
0A2D 20 0F 78   334           JSR READLN
0A30 4C 03 08   335           JMP MENULOOP
0A33            336  ;
0A33            337  ;
0A33            338  ;
0A33            339  ;
0A33            340  ;
0A33            341  ;**********************************
0A33            342  ;
0A33            343  ; Demonstrate set selection with
0A33            344  ; the INSET routine.
0A33            345  ;
0A33            346  ;
0A33 20 36 78   347  SETLOOP  JSR PRINT
0A36 8D D0 F2   348           BYT CR,"Press return to continue:",0
0A39 E5 F3 F3 
0A3C A0 F2 E5 
0A3F F4 F5 F2 
0A42 EE A0 F4 
0A45 EF A0 E3 
0A48 EF EE F4 
0A4B E9 EE F5 
0A4E E5 BA 00 
0A51 20 0F 78   349           JSR READLN
0A54            350  ;
0A54 20 0C 78   351  SETSELCT JSR HOME
0A57 20 36 78   352           JSR PRINT
0A5A C5 EE F4   353           BYT "Enter an alphabetic or numeric",CR
0A5D E5 F2 A0 
0A60 E1 EE A0 
0A63 E1 EC F0 
0A66 E8 E1 E2 
0A69 E5 F4 E9 
0A6C E3 A0 EF 
0A6F F2 A0 EE 
0A72 F5 ED E5 
0A75 F2 E9 E3 
0A78 8D 
0A79 E3 E8 E1   354           BYT "character (return quits):",0
0A7C F2 E1 E3 
0A7F F4 E5 F2 
0A82 A0 A8 F2 
0A85 E5 F4 F5 
0A88 F2 EE A0 
0A8B F1 F5 E9 
0A8E F4 F3 A9 
0A91 BA 00 
0A93            355  ;
0A93 20 03 78   356           JSR GETC
0A96 C9 8D      357           CMP #CR
0A98 D0 03      358           BNE >1
0A9A 4C 03 08   359           JMP MENULOOP
0A9D            360  ;
0A9D            361  ; Convert lower case to upper case
0A9D            362  ;
0A9D C9 E1      363  ^1       CMP #"a"
0A9F 90 02      364           BLT >0
0AA1 29 DF      365           AND #$DF
0AA3            366  ;
0AA3            367  ^0:
0AA3            368  ;
0AA3            369  ;
0AA3            370  ;
0AA3            371  ;
0AA3            372  ; Note the sneaky way of specifying
0AA3            373  ; the number of elements in the sets.
0AA3            374  ; LISA's STR pseudo-opcode emits the
0AA3            375  ; length of the string that follows.
0AA3            376  ; This just happens to be the number
0AA3            377  ; of characters in the set. This only
0AA3            378  ; works if the set consists entirely
0AA3            379  ; of printable characters.
0AA3            380  ;
0AA3 20 4E 78   381           JSR INSET
0AA6 1A C1 C2   382           STR "ABGDEFGHIUJKLMTOPQRSTUWXYZ"
0AA9 C7 C4 C5 
0AAC C6 C7 C8 
0AAF C9 D5 CA 
0AB2 CB CC CD 
0AB5 D4 CF D0 
0AB8 D1 D2 D3 
0ABB D4 D5 D7 
0ABE D8 D9 DA 
0AC1 06 0B      383           ADR ISALPHA
0AC3            384  ;
0AC3 20 4E 78   385           JSR INSET
0AC6 0A B0 B1   386           STR "0123456789"
0AC9 B2 B3 B4 
0ACC B5 B6 B7 
0ACF B8 B9 
0AD1 34 0B      387           ADR ISNUMRIC
0AD3            388  ;
0AD3            389  ;
0AD3            390  ; Non-alphanumeric character at this point.
0AD3            391  ;
0AD3 20 36 78   392           CSP PRINT,#BELL,#CR
0AD6 87 8D 
0AD8 D9 EF F5   393           BYT "You pressed a non-alphanumeric"
0ADB A0 F0 F2 
0ADE E5 F3 F3 
0AE1 E5 E4 A0 
0AE4 E1 A0 EE 
0AE7 EF EE AD 
0AEA E1 EC F0 
0AED E8 E1 EE 
0AF0 F5 ED E5 
0AF3 F2 E9 E3 
0AF6 A0 E3 E8   394           BYT " character"
0AF9 E1 F2 E1 
0AFC E3 F4 E5 
0AFF F2 
0B00 8D 8D 00   395           BYT CR,CR,0
0B03 4C 33 0A   396           JMP SETLOOP
0B06            397  ;
0B06            398  ;
0B06 20 36 78   399  ISALPHA  CSP PRINT,#CR,#CR
0B09 8D 8D 
0B0B D9 EF F5   400           BYT "You entered an alphabetic character"
0B0E A0 E5 EE 
0B11 F4 E5 F2 
0B14 E5 E4 A0 
0B17 E1 EE A0 
0B1A E1 EC F0 
0B1D E8 E1 E2 
0B20 E5 F4 E9 
0B23 E3 A0 E3 
0B26 E8 E1 F2 
0B29 E1 E3 F4 
0B2C E5 F2 
0B2E 8D 8D 00   401           BYT CR,CR,0
0B31 4C 33 0A   402           JMP SETLOOP
0B34            403  ;
0B34 20 36 78   404  ISNUMRIC CSP PRINT,#CR,#CR
0B37 8D 8D 
0B39 D9 EF F5   405           BYT "You entered a numeric character"
0B3C A0 E5 EE 
0B3F F4 E5 F2 
0B42 E5 E4 A0 
0B45 E1 A0 EE 
0B48 F5 ED E5 
0B4B F2 E9 E3 
0B4E A0 E3 E8 
0B51 E1 F2 E1 
0B54 E3 F4 E5 
0B57 F2 
0B58 8D 8D 00   406           BYT CR,CR,0
0B5B 4C 33 0A   407           JMP SETLOOP
0B5E            408  ;
0B5E            409  ;
0B5E            410  ;
0B5E            411  ;
0B5E            412  ;
0B5E            413  ;
0B5E            414  ;
0B5E            415  ;**********************************
0B5E            416  ;
0B5E            417  ;
0B5E            418  ; Demonstrate the NOTINSET routine
0B5E            419  ; here.
0B5E            420  ;
0B5E 20 0C 78   421  NOTSTEXP JSR HOME
0B61 20 36 78   422  NOTSTLP  CSP PRINT
0B64 C2 F9 A0   423           BYT "By typing a non-alphanumeric",CR
0B67 F4 F9 F0 
0B6A E9 EE E7 
0B6D A0 E1 A0 
0B70 EE EF EE 
0B73 AD E1 EC 
0B76 F0 E8 E1 
0B79 EE F5 ED 
0B7C E5 F2 E9 
0B7F E3 8D 
0B81 E3 E8 E1   424           BYT "character you can exit this routine"
0B84 F2 E1 E3 
0B87 F4 E5 F2 
0B8A A0 F9 EF 
0B8D F5 A0 E3 
0B90 E1 EE A0 
0B93 E5 F8 E9 
0B96 F4 A0 F4 
0B99 E8 E9 F3 
0B9C A0 F2 EF 
0B9F F5 F4 E9 
0BA2 EE E5 
0BA4 8D 00      425           BYT CR,0
0BA6 20 03 78   426           JSR GETC
0BA9 C9 E1      427           CMP #"a"
0BAB 90 02      428           BLT >0
0BAD 29 DF      429           AND #$DF
0BAF            430  ;
0BAF 20 51 78   431  ^0       CSP NOTINSET
0BB2 24 B0 B1   432           STR "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"
0BB5 B2 B3 B4 
0BB8 B5 B6 B7 
0BBB B8 B9 C1 
0BBE C2 C3 C4 
0BC1 C5 C6 C7 
0BC4 C8 C9 CA 
0BC7 CB CC CD 
0BCA CE CF D0 
0BCD D1 D2 D3 
0BD0 D4 D5 D6 
0BD3 D7 D8 D9 
0BD6 DA 
0BD7 03 08      433           ADR MENULOOP
0BD9 4C 61 0B   434           JMP NOTSTLP
0BDC            435  ;
0BDC            436  ;
0BDC            437  ;
0BDC            438  ;**********************************
0BDC            439  ;
0BDC            440  ; Variable declaration
0BDC            441  ;
0BDC 00 00      442  SELCTVAR ADR 0
0BDE            443           END